package exemplos;

import interfacesFerrovia.TratadorDeEventos;
import malhaFerroviaria.Ferrovia;

/**
 * Esta classe � um exempo de implementa��o da interface Tratador de Eventos.
 * O tratamento de cada evento, neste caso, se resume a listar na sa�da padr�o
 * os eventos ocorridos e os dados passados com os mesmos.
 * @author Vanini
 *
 */

public class Console implements TratadorDeEventos {

		Ferrovia ferrovia = Ferrovia.getInstance();
		
		
		@Override
		public void alarmeChave(String idChave, int instanteAtual,
				TipoFalha tipoDeFalha) {
			System.out.println("==> alarmeChave id:"+idChave+" t:"+instanteAtual+" falha:"+tipoDeFalha);

		}

		@Override
		public void alarmeComposicao(String idComposicao, int instanteAtual,
				TipoFalha tipoDeFalha) {
			System.out.println("==> alarmeComposicao id:"+idComposicao+" t:"+instanteAtual+" falha:"+tipoDeFalha);

		}

		@Override
		public void chegadaComposicao(String idComposicao, int instanteAtual,
				String idTrecho) {
			System.out.println("==> Chegada de Composicao id:"+idComposicao+" t:"+instanteAtual+" trecho:"+idTrecho);

		}

		@Override
		public void entradaComposicaoChave(String idChave, int instanteAtual,
				String idComposicao, String idTrechoOrigem) {
			System.out.println("==> entrada na chave id:"+idChave+" t:"+instanteAtual+
					           " id.Comp.:"+idComposicao+" tr.Origem:"+idTrechoOrigem);

		}

		@Override
		public void partidaComposicao(String idComposicao, int instanteAtual,
				String idTrecho) {
			System.out.println("==> partida composicao id:"+idComposicao+" t:"+instanteAtual+" trecho:"+idTrecho);
			System.out.println("Velocidade atual ---- "+ferrovia.consultaAtributo("comp01", TipoAtributo.VEL_ATUAL));
		}

		@Override
		public void passagemComposicao(String idTrecho, int instanteAtual,
				float posicao, String idComposicao, float velocidade,
				boolean sentidoAB) {
			System.out.println("==> passagem composicao id:"+idComposicao+" t:"+instanteAtual+
					           " trecho:"+idTrecho+" pos:"+posicao+" vel:"+velocidade+
					           " sent.AB:"+sentidoAB);
			System.out.println("Velocidade atual ---- "+ferrovia.consultaAtributo("comp01", TipoAtributo.VEL_ATUAL));
			if (instanteAtual >= 200)
				ferrovia.frearComposicao("comp01", 10, Boolean.FALSE);
			

		}

		@Override
		public void saidaComposicaoChave(String idChave, int instanteAtual,
				String idComposicao, String idTrechoDestino) {
			System.out.println("==> saida da chave id:"+idChave+" t:"+instanteAtual+" id.Comp:"+
					           idComposicao+" tr.Dest:"+idTrechoDestino);

		}

		@Override
		public void tic(int instanteAtual) {
			// nada a fazer, neste caso
		}



}
